/*
 * 文件名：ServiceExceptionAspect.java
 * 版权：Copyright by www.huawei.com
 * 描述：
 * 修改人：ming
 * 修改时间：2018年6月1日
 * 跟踪单号：
 * 修改单号：
 * 修改内容：
 */

package com.ljm.aspect;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/*@Aspect
@Component*/
public class ServiceExceptionAspect {
    private static final Logger logger= LoggerFactory.getLogger(ServiceExceptionAspect.class);
    /**
     * @within(org.springframework.stereotype.Service)，拦截带有 @Service 注解的类的所有方法
     * @annotation(org.springframework.web.bind.annotation.RequestMapping)，拦截带有@RquestMapping的注解方法
     */
    @Pointcut("@within(org.springframework.stereotype.Service) && execution(public * *(..))")
    private void servicePointcut() {
        logger.info("切口");
    }

    /**
     * 拦截service层异常，记录异常日志，并设置对应的异常信息
     * 目前只拦截Exception，是否要拦截Error需再做考虑
     *
     * @param e 异常对象
     */
    @AfterThrowing(pointcut = "servicePointcut()", throwing = "e")
    public void handle(JoinPoint point, Exception e) {
        //暂时只打印异常  以后考虑日志上传 加特殊业务警报
        logger.info("异常",e);
    }
}
